function ret=SK(query,n)
 if(n==0)
  ret=APPRX(query);
  return;
 endif
 W=SK(query,n-1);
 mat=W.mat;
 
 [a,b]=factor1(getMainVector(query*mat'));
 A=u_rot(a);
 B=u_rot(b);
 W1=SK(A,n-1);
 W2=SK(B,n-1);
 ret=update_matrixpoint(W1,W2);
 ret=update_matrixpoint(ret,inverse_matrixpoint(W1));
 ret=update_matrixpoint(ret,inverse_matrixpoint(W2));
 ret=update_matrixpoint(ret,W);
endfunction
